package decorator_pattern.ex1;

/**
 * 装饰者类，用于在Troll对象上添加防御属性。
 * @author 申书航
 * @version 1.0
 */
public class AddDefenseTroll extends DecoratorTroll{

    private int percentHp;

    private boolean isDefense;

    /**
     * 构造函数，接收一个Troll对象。
     *
     * @param troll 被装饰的Troll对象
     */
    public AddDefenseTroll(Troll troll) {
        super(troll);
        percentHp = (int) (getHp() * 0.2);
    }

    /**
     * 重写hit方法，处理Troll受到攻击的逻辑。
     * 当Troll的生命值低于一定比例时，自动装备防御。
     *
     * @param hitVal 受到的伤害值
     */
    @Override
    public void hit(int hitVal) {
        super.hit(hitVal);
        if (!isDefense && getHp() > 0 && getHp() < percentHp) {
            System.out.println("需要装备！");
            super.setDefensePower(getDefensePower() + 100);
            isDefense = true;
        }
    }
}
